package com.example.leetcode.prcatice;

/**
 * 给你两个链表 list1 和 list2 ，它们包含的元素分别为 n 个和 m 个。
 *
 * <p>请你将 list1 中第 a 个节点到第 b 个节点删除，并将list2 接在被删除节点的位置。
 *
 * <p>下图中蓝色边和节点展示了操作后的结果：
 *
 * <p>来源：力扣（LeetCode） 链接：https://leetcode-cn.com/problems/merge-in-between-linked-lists
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class Test1669 {

    public ListNode mergeInBetween(ListNode list1, int a, int b, ListNode list2) {
        ListNode pre = list2;
        int count = 0;
        while (pre.next != null){
            pre = pre.next;
        }
        ListNode pre2 = list1;
        ListNode pre3 = list1;
        while (count !=b+1){
            count++;
            pre2 = pre2.next;
        }
        pre.next = pre2;
        while (a>1){
            a--;
            pre3 = pre3.next;
        }
        pre3.next = list2;
        return list1;
    }
}


class Demo1669{
  public static void main(String[] args) {
    ListNode list1 = new ListNode(0);
    list1.next = new ListNode(1);
    list1.next.next = new ListNode(2);
    list1.next.next.next = new ListNode(3);
    list1.next.next.next.next = new ListNode(4);
    list1.next.next.next.next.next = new ListNode(5);
    ListNode list2 = new ListNode(1000000);
    list2.next = new ListNode(1000001);
    list2.next.next = new ListNode(1000002);
    int a =3;
    int b =4;
    Test1669 t = new Test1669();
    ListNode listNode = t.mergeInBetween(list1, a, b, list2);
    while (listNode != null){
      System.out.println("val="+listNode.val);
      listNode = listNode.next;
    }
  }
}